string 類型的內建函式


Posted by saffran on 2021-02-05

參考資料 String

toUpperCase() 小寫變大寫

只有「小寫字母」才會被 toUpperCase() 轉成大寫

因此,在做題目時,根本不需要去檢查「是否為小寫字母」

  • 原本是符號:toUpperCase() 不會改變它
  • 原本是大寫:toUpperCase() 不會改變它
    var a = 'Fancy!!'.toUpperCase()
    console.log(a)
    // output: FANCY!!
    

toLowerCase() 大寫變小寫

只有「大寫字母」才會被 toLowerCase() 轉成小寫

因此,在做題目時,根本不需要去檢查「是否為大寫字母」

  • 原本是符號:toLowerCase() 不會改變它
  • 原本是小寫:toLowerCase() 不會改變它
    var a = 'ALMOND!!'.toLowerCase()
    console.log(a)
    // output: almond!!
    

轉換大小寫的另一種方式

得知字母的 ASCII Code charCodeAt()

每個字母、符號存在電腦內,都會有一個對應的數字,就叫做它的 ASCII Code

  • 首先,先用 charCodeAt(0) 來得知「大寫 A」的 ASCII Code 是 65
    charCodeAt(0) 的 0 是代表「字串 'A' 的第一個位置的字」,也就是 A
    ```javascript=
    var str = 'A'
    var code = str.charCodeAt(0)

console.log(code)
// output: 65

* 再用 `charCodeAt(0)` 來得知「小寫 a」的 ASCII Code 是 97
```javascript=
var str = 'a'
var code = str.charCodeAt(0)

console.log(code)
// output: 97

大小寫字母之間的 ASCII Code 差距是 32

97(小寫 a)- 65(大寫 a)= 32

把 ASCII Code 轉成字母 String.fromCharCode()

String.fromCharCode() 可以把 ASCII Code 轉成「它所代表的字母 or 符號」

因此,如果我想把「小寫 h」轉成「大寫 H」

  • 先取得「小寫 h」的 ASCII Code
  • 把「小寫 h 的 ASCII Code」減 32,就會是「大寫 H 的 ASCII Code」
  • 再用 String.fromCharCode() 把「大寫 H 的 ASCII Code」轉成字母即可
var str = 'h'
var code = str.charCodeAt(0)
var upperStr = String.fromCharCode(code - 32)

console.log(upperStr)
// output: H

判斷字元是「小寫 or 大寫」

字串可以用「ASCII Code」來比大小,也就是「ASCII Code 數字的排序」

範例一:
回傳 true,代表「字串'h'」會介於「字串'a'」和「字串'z'」之間,因此可以判斷:變數 char 是小寫字母

var char = 'h'
console.log(char >= 'a' && char <= 'z')
// output: true

範例二:
回傳 false,代表「字串'h'」沒有介於「字串'a'」和「字串'z'」之間,因此可以判斷:變數 char 不是小寫字母

var char = 'H'
console.log(char >= 'a' && char <= 'z')
// output: false

indexOf() 判斷單字是否存在

indexOf() 可以判斷:在一個字串裡面,have 這個單字是否存在?

如果單字存在,就會回傳「第一個字母的 index 值」

如果有 have 這個單字的話,就會回傳 have 這個單字的第一個字母:h 的 index 值

index 從 0 開始計算,空格、符號也都算一個 index

var str = 'May I have a coffee'
var index = str.indexOf('have')

console.log(index)
// output: 6

如果單字不存在,就會回傳一個「負數」

indexOf() 回傳的值如果 < 0,就代表「have!!」並不存在

var str = 'May I have a coffee'
var index = str.indexOf('have!!')

console.log(index)
// output: -1

replace() 取代字串

例如:我想要把字串中的 'May' 換成 '!!!'

var str = 'May I have a coffee'.replace('May', '!!!')
console.log(str)
// output: !!! I have a coffee

注意!當我要把 'e' 換成 '!!!',就只會把「第一個 e」換掉,後面的 e 都不會受影響

只會 match 到「第一個」

var str = 'May I have a coffee'.replace('e', '!!!')
console.log(str)
// output: May I hav!!! a coffee

把全部的 'e' 都換成 ‘!!!’

如果要把全部的 'e' 都換成 ‘!!!’,就要使用 RegExp(Regular Expression 正規表達式)

這個 RegExp 是「另一種尋找字串的方法」:
/e/g 的 g 就是 global 的意思--> 會 globally 地去 match 到「每一個」有對到的字元

var str = 'May I have a coffee'.replace(/e/g, '!!!')
console.log(str)
// output: May I hav!!! a coff!!!!!!

split() 把字串切割成陣列

split() 會回傳一個陣列

沒有 separator 參數

如果「沒有寫 separator 參數」或是「字串裡面不存在 separator 參數」,那麼回傳的陣列就會是:只有一個元素,這個元素就是「原本的字串」

var str = 'May I have a coffee'
console.log(str.split())
// output: [ 'May I have a coffee' ]

傳入 separator 參數

可以傳一個 separator 參數,代表:要用什麼來切割
例如:
用一個空格 ' ' 來切割,就會回傳一個「有 5 個元素的陣列」

var str = 'May I have a coffee'
console.log(str.split(' '))
// output: [ 'May', 'I', 'have', 'a', 'coffee' ]

'a' 來切割,就會回傳一個「有 4 個元素的陣列」(a 就不見了)

var str = 'May I have a coffee'
console.log(str.split('a'))
// output: [ 'M', 'y I h', 've ', ' coffee' ]

trim() 去除最前面、最後面的空格

trim() 可以去除掉「字串最前面、最後面的所有空格」

var str = '   May I have a coffee       '
console.log(str.trim())
// output: May I have a coffee

string 也可使用某些「array 的內建函式」

slice() 擷取字串的某個部份

  • slice() 會回傳另一個新的 string
  • 原本的 string 並不會被改變
    let str = 'penguin'
    let newStr = str.slice(2, 5)
    console.log(newStr)
    // output: ngu
    

#javascript







Related Posts

hit the road (final project) 雜七雜八心得

hit the road (final project) 雜七雜八心得

Contextual Data Augmentation

Contextual Data Augmentation

Switch between uppercase to lowercase

Switch between uppercase to lowercase


Comments